package org.biblicalcontent.gbsbijbel.internal.entities;

import java.util.List;

import javax.jdo.annotations.Index;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.biblicalcontent.gbsbijbel.model.IHoofdstuk;
import org.biblicalcontent.gbsbijbel.model.ITekst;

@Entity
@Table(name = "HOOFDSTUK")
public class Hoofdstuk implements IHoofdstuk {

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hoofdstuk_seq")
	@SequenceGenerator(name = "hoofdstuk_seq", initialValue = 1, allocationSize = 1)
	private Integer hoofdstukId;

	@Index(name = "IDX_HOOFDSTUK_BIJ_BIJBELBOEK")
	private Integer bijbelboekId;

	private Integer hoofdstukNummer;

	@Column(columnDefinition = "TEXT")
	private String hoofdstukIntro;

	@OneToMany
	private List<ITekst> teksten;

	public Hoofdstuk() {

	}

	@Override
	public Integer getHoofdstukId() {
		return hoofdstukId;
	}

	public void setHoofdstukId(Integer hoofdstukId) {
		this.hoofdstukId = hoofdstukId;
	}

	@Override
	public Integer getBijbelboekId() {
		return bijbelboekId;
	}

	public void setBijbelboekId(Integer bijbelboekId) {
		this.bijbelboekId = bijbelboekId;
	}

	@Override
	public Integer getHoofdstukNummer() {
		return hoofdstukNummer;
	}

	public void setHoofdstukNummer(Integer hoofdstukNummer) {
		this.hoofdstukNummer = hoofdstukNummer;
	}

	@Override
	public String getHoofdstukIntro() {
		return hoofdstukIntro;
	}

	public void setHoofdstukIntro(String hoofdstukIntro) {
		this.hoofdstukIntro = hoofdstukIntro;
	}

	@Override
	public HoofdstukSleutel getLogischeSleutel() {
		return new HoofdstukSleutel(bijbelboekId, hoofdstukNummer);
	}

	public void setTeksten(List<ITekst> tekstenInHoofdstuk) {
		this.teksten = tekstenInHoofdstuk;
	}

	@Override
	public List<ITekst> getTeksten() {
		return teksten;
	}

}
